﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.IO;
using System.Net;

namespace Util
{
    public class FileIO
    {

        public void copiar(string origen, string destino)
        {
            string[] aux = origen.Split('\\');

            destino += "\\" + aux[aux.Length - 1];

            File.Copy(origen, destino, true);
        }

        public void copiar(string origen, string destino, string nombreArchivo)
        {
            destino += "\\" + nombreArchivo;

            File.Copy(origen, destino, true);
        }

        public void copiar(string pathFile, byte[] bytes)
        {
            FileStream fileStream = File.Create(pathFile);

            for (int i = 0; i < bytes.Length; i++)
            {
                fileStream.WriteByte(bytes[i]);
            }

            fileStream.Close();

        }

        public void mover(string origen, string destino)
        {
            string[] aux = origen.Split('\\');

            destino += "\\" + aux[aux.Length - 1];

            if (this.existe(destino))
            {
                this.borrar(destino);
            }

            File.Move(origen, destino);
        }

        public void mover(string origen, string destino, string nombreArchivo)
        {

            destino += "\\" + nombreArchivo;

            if (this.existe(destino))
            {
                this.borrar(destino);
            }

            File.Move(origen, destino);

        }

        public void borrar(string pathFile)
        {
            File.Delete(pathFile);
        }

        public Boolean existe(string pathFile)
        {
            return File.Exists(pathFile);
        }

        public byte[] getBytes(string filePath)
        {

            // this method is limited to 2^32 byte files (4.2 GB)

            FileStream fileStream = File.OpenRead(filePath);

            try
            {

                byte[] bytes = new byte[fileStream.Length];

                fileStream.Read(bytes, 0, System.Convert.ToInt32(fileStream.Length));

                fileStream.Close();

                return bytes;

            }

            finally
            {

                fileStream.Close();

            }

        }

        public void download(string url, string pathFile)
        {

            try
            {

                WebClient webClient = new WebClient();

                webClient.DownloadFile(url, @pathFile);

            }

            catch (Exception ex)
            {

                System.Console.WriteLine("Problem: " + ex.Message);

            }

        }

    }
}